உலகளாவிய பார்வையாளர்களுக்காக வடிவமைக்கப்பட்ட, மீள்தன்மையுடைய மற்றும் அளவிடக்கூடிய பரவலாக்கப்பட்ட அமைப்புகளை உருவாக்குவதற்கான காலப்போக்கில் நிலைத்தன்மை வடிவங்கள் பற்றிய ஆழமான ஆய்வு.
தரவு நிலைத்தன்மையைக் கையாளுதல்: காலப்போக்கில் நிலைத்தன்மை வடிவங்களை ஆராய்தல்
பரவலாக்கப்பட்ட அமைப்புகளின் சாம்ராஜ்யத்தில், அனைத்து முனைகளிலும் முழுமையான, நிகழ்நேரத் தரவு நிலைத்தன்மையை அடைவது ஒரு பெரிய சவாலாக இருக்கலாம். அமைப்புகள் சிக்கலிலும் அளவிலும் வளரும்போது, குறிப்பாக பரந்த புவியியல் தூரங்கள் மற்றும் மாறுபட்ட நேர மண்டலங்களில் பயனர்களுக்குச் சேவை செய்யும் உலகளாவிய பயன்பாடுகளுக்கு, வலுவான நிலைத்தன்மையைத் தொடர்வது பெரும்பாலும் கிடைக்கும் தன்மை மற்றும் செயல்திறன் ஆகியவற்றின் விலையில் வருகிறது. இங்கேதான் காலப்போக்கில் நிலைத்தன்மை என்ற கருத்து ஒரு சக்திவாய்ந்த மற்றும் நடைமுறை மாதிரியாக வெளிப்படுகிறது. இந்த வலைப்பதிவு இடுகை காலப்போக்கில் நிலைத்தன்மை என்றால் என்ன, நவீன பரவலாக்கப்பட்ட கட்டமைப்புகளுக்கு இது ஏன் முக்கியமானது மற்றும் அதை திறம்பட நிர்வகிப்பதற்கான பல்வேறு வடிவங்கள் மற்றும் உத்திகளைப் பற்றி ஆராயும்.
தரவு நிலைத்தன்மை மாதிரிகளைப் புரிந்துகொள்வது
காலப்போக்கில் நிலைத்தன்மையை நாம் உண்மையிலேயே பாராட்ட முடியும் முன், தரவு நிலைத்தன்மை மாதிரிகளின் பரந்த நிலப்பரப்பைப் புரிந்துகொள்வது அவசியம். இந்த மாதிரிகள் ஒரு பரவலாக்கப்பட்ட அமைப்பின் வெவ்வேறு பகுதிகளில் தரவு மாற்றங்கள் எப்போது, எப்படி தெரியும் என்பதை ஆணையிடுகின்றன.
வலுவான நிலைத்தன்மை
வலுவான நிலைத்தன்மை, பெரும்பாலும் நேர்கோட்டுத்தன்மை என்று குறிப்பிடப்படுகிறது, அனைத்து வாசிப்புகளும் மிக சமீபத்திய எழுத்தை வழங்கும் என்று உத்தரவாதம் அளிக்கிறது. வலுவான நிலைத்தன்மை கொண்ட ஒரு அமைப்பில், எந்தவொரு செயல்பாடும் ஒரு தனி, உலகளாவிய நேரத்தில் நடப்பது போல் தோன்றுகிறது. இது ஒரு கணிக்கக்கூடிய மற்றும் உள்ளுணர்வு பயனர் அனுபவத்தை வழங்கினாலும், இது பொதுவாக முனைகளுக்கு இடையே கணிசமான ஒருங்கிணைப்பு மேல்தளத்தை தேவைப்படுகிறது, இது பின்வருவனவற்றிற்கு வழிவகுக்கும்:
- அதிகரித்த தாமதம்: செயல்பாடுகள் பல முனைகளிலிருந்து உறுதிப்படுத்தல்களுக்காகக் காத்திருக்க வேண்டும், இதனால் பதில்கள் மெதுவாகும்.
- குறைக்கப்பட்ட கிடைக்கும் தன்மை: அமைப்பின் ஒரு குறிப்பிடத்தக்க பகுதி கிடைக்கவில்லை என்றால், சில முனைகள் இன்னும் இயங்கினாலும், எழுதுதல் மற்றும் படித்தல் தடுக்கப்படலாம்.
- அளவிடுதல் வரம்புகள்: தேவையான ஒருங்கிணைப்பு அமைப்பு அளவிடும்போது ஒரு தடையாக மாறும்.
பல உலகளாவிய பயன்பாடுகளுக்கு, குறிப்பாக அதிக பரிவர்த்தனை அளவுகள் அல்லது உலகளவில் பயனர்களுக்கு குறைந்த தாமத அணுகல் தேவைப்படும் பயன்பாடுகளுக்கு, வலுவான நிலைத்தன்மையின் வர்த்தகங்கள் தடையாக இருக்கலாம்.
காலப்போக்கில் நிலைத்தன்மை
காலப்போக்கில் நிலைத்தன்மை என்பது ஒரு பலவீனமான நிலைத்தன்மை மாதிரி, அங்கு கொடுக்கப்பட்ட தரவு உருப்படிக்கு புதிய புதுப்பிப்புகள் எதுவும் செய்யப்படாவிட்டால், அந்த உருப்படியை அணுகும் அனைத்து அணுகல்களும் கடைசியாக புதுப்பிக்கப்பட்ட மதிப்பை வழங்கும். எளிமையான சொற்களில், புதுப்பிப்புகள் காலப்போக்கில் அமைப்பு முழுவதும் பரப்பப்படுகின்றன. வெவ்வேறு முனைகள் தரவின் வெவ்வேறு பதிப்புகளை வைத்திருக்கும் காலம் இருக்கலாம், ஆனால் இந்த வேறுபாடு தற்காலிகமானது. இறுதியில், அனைத்து நகல்களும் ஒரே நிலைக்கு வரும்.
காலப்போக்கில் நிலைத்தன்மையின் முதன்மை நன்மைகள்:
- அதிக கிடைக்கும் தன்மை: முனைகள் மற்ற முனைகளுடன் உடனடியாகத் தொடர்பு கொள்ள முடியாவிட்டாலும், படித்தல் மற்றும் எழுதுதலைத் தொடர்ந்து ஏற்றுக்கொள்ளலாம்.
- மேம்படுத்தப்பட்ட செயல்திறன்: அனைத்து பிற முனைகளிலிருந்தும் ஒப்புதல்களுக்காக அவை காத்திருக்கத் தேவையில்லாததால் செயல்பாடுகள் விரைவாக முடிக்கப்படலாம்.
- மேம்படுத்தப்பட்ட அளவிடுதல்: குறைக்கப்பட்ட ஒருங்கிணைப்பு மேல்நிலை அமைப்புகளை எளிதாக அளவிட அனுமதிக்கிறது.
உடனடி நிலைத்தன்மையின் பற்றாக்குறை கவலையாகத் தோன்றினாலும், இது பெரிய சமூக ஊடக தளங்கள், இ-காமர்ஸ் ஜாம்பவான்கள் மற்றும் உலகளாவிய உள்ளடக்க விநியோக நெட்வொர்க்குகள் உட்பட பல உயர் கிடைக்கக்கூடிய மற்றும் அளவிடக்கூடிய அமைப்புகள் நம்பியிருக்கும் ஒரு மாதிரி.
CAP தேற்றம் மற்றும் காலப்போக்கில் நிலைத்தன்மை
காலப்போக்கில் நிலைத்தன்மைக்கும் அமைப்பு வடிவமைப்புக்கும் இடையிலான உறவு CAP தேற்றத்துடன் உள்ளார்ந்த முறையில் இணைக்கப்பட்டுள்ளது. விநியோகிக்கப்பட்ட தரவு அங்காடி பின்வரும் மூன்று உத்தரவாதங்களில் இரண்டை மட்டுமே ஒரே நேரத்தில் வழங்க முடியும் என்று விநியோகிக்கப்பட்ட அமைப்புகளின் இந்த அடிப்படை தேற்றம் கூறுகிறது:
- நிலைத்தன்மை (C): ஒவ்வொரு வாசிப்பும் சமீபத்திய எழுத்தை அல்லது ஒரு பிழையைப் பெறுகிறது. (இது வலுவான நிலைத்தன்மையைக் குறிக்கிறது).
- கிடைக்கும் தன்மை (A): ஒவ்வொரு கோரிக்கையும் சமீபத்திய எழுத்தைக் கொண்டுள்ளது என்ற உத்தரவாதம் இல்லாமல் (பிழை அல்லாத) பதிலை பெறுகிறது.
- பிரிவினை சகிப்புத்தன்மை (P): முனைகளுக்கு இடையில் நெட்வொர்க்கால் தன்னிச்சையான எண்ணிக்கையிலான செய்திகள் கைவிடப்பட்டாலும் (அல்லது தாமதப்படுத்தப்பட்டாலும்) அமைப்பு தொடர்ந்து செயல்படுகிறது.
நடைமுறையில், எந்தவொரு விநியோகிக்கப்பட்ட அமைப்பிலும் நெட்வொர்க் பகிர்வுகள் (P) ஒரு யதார்த்தம், குறிப்பாக உலகளாவிய ஒன்று. எனவே, ஒரு பகிர்வு ஏற்படும்போது வடிவமைப்பாளர்கள் நிலைத்தன்மை (C) அல்லது கிடைக்கும் தன்மைக்கு (A) முன்னுரிமை கொடுக்க வேண்டும்.
- CP அமைப்புகள்: இந்த அமைப்புகள் நிலைத்தன்மை மற்றும் பகிர்வு சகிப்புத்தன்மைக்கு முன்னுரிமை அளிக்கின்றன. ஒரு நெட்வொர்க் பகிர்வின் போது, அவை மீதமுள்ள முனைகளில் தரவு நிலைத்தன்மையை உறுதி செய்வதற்காக கிடைக்காமல் போவதன் மூலம் கிடைக்கும் தன்மையை தியாகம் செய்யலாம்.
- AP அமைப்புகள்: இந்த அமைப்புகள் கிடைக்கும் தன்மை மற்றும் பகிர்வு சகிப்புத்தன்மைக்கு முன்னுரிமை அளிக்கின்றன. ஒரு நெட்வொர்க் பகிர்வின் போது, அவை கிடைக்கும், ஆனால் இது பெரும்பாலும் உடனடி நிலைத்தன்மையை தியாகம் செய்வதைக் குறிக்கிறது, இது காலப்போக்கில் நிலைத்தன்மைக்கு வழிவகுக்கிறது.
பெரும்பாலான நவீன, உலகளவில் விநியோகிக்கப்பட்ட அமைப்புகள் அதிக கிடைக்கும் தன்மை மற்றும் அளவிடுதலை நோக்கமாகக் கொண்டுள்ளன, இதன் விளைவாக காலப்போக்கில் நிலைத்தன்மையை ஏற்றுக்கொள்வதன் மூலம் AP அமைப்புகளை நோக்கிச் செல்கின்றன.
காலப்போக்கில் நிலைத்தன்மை எப்போது பொருத்தமானது?
காலப்போக்கில் நிலைத்தன்மை என்பது ஒவ்வொரு விநியோகிக்கப்பட்ட அமைப்புக்கும் ஒரு வெள்ளி தோட்டா அல்ல. அதன் பொருத்தம் பயன்பாட்டின் தேவைகள் மற்றும் தேங்கிப்போன தரவுகளுக்கான ஏற்றுக்கொள்ளக்கூடிய சகிப்புத்தன்மையைப் பெரிதும் சார்ந்துள்ளது. இது குறிப்பாக இதற்கு ஏற்றது:
- படித்தல்-கனமான பணிச்சுமைகள்: எழுதுவதை விட படிப்பது மிகவும் அடிக்கடி இருக்கும் பயன்பாடுகள் பெரிதும் பயனடைகின்றன, ஏனெனில் தேங்கிப்போன எழுதுதல்களை விட தேங்கிப்போன படிப்புகள் குறைவான தாக்கத்தை ஏற்படுத்துகின்றன. எடுத்துக்காட்டுகளில் தயாரிப்பு பட்டியல்கள், சமூக ஊடக ஊட்டங்கள் அல்லது செய்தி கட்டுரைகள் ஆகியவை அடங்கும்.
- முக்கியமற்ற தரவு: பரப்புவதில் ஒரு சிறிய தாமதம் அல்லது ஒரு தற்காலிக நிலைத்தன்மையின்மை குறிப்பிடத்தக்க வணிக அல்லது பயனர் தாக்கத்திற்கு வழிவகுக்காத தரவு. பயனர் விருப்பத்தேர்வுகள், அமர்வு தரவு அல்லது பகுப்பாய்வு அளவீடுகளைப் பற்றி சிந்தியுங்கள்.
- உலகளாவிய விநியோகம்: உலகளவில் பயனர்களுக்கு சேவை செய்யும் பயன்பாடுகள் பெரும்பாலும் கிடைக்கும் தன்மைக்கும் குறைந்த தாமதத்திற்கும் முன்னுரிமை அளிக்க வேண்டும், இது காலப்போக்கில் நிலைத்தன்மையை ஒரு தேவையான வர்த்தகமாக்குகிறது.
- அதிக இயக்க நேரம் தேவைப்படும் அமைப்புகள்: உச்சக்கால ஷாப்பிங் சீசன்களில் அணுகக்கூடியதாக இருக்க வேண்டிய இ-காமர்ஸ் தளங்கள் அல்லது முக்கியமான உள்கட்டமைப்பு சேவைகள்.
மாறாக, வலுவான நிலைத்தன்மை தேவைப்படும் அமைப்புகளில் நிதி பரிவர்த்தனைகள் (எ.கா., வங்கி இருப்புக்கள், பங்கு வர்த்தகங்கள்), அதிக விற்பனை தடுக்கப்பட வேண்டிய சரக்கு மேலாண்மை அல்லது செயல்பாடுகளின் கடுமையான வரிசை முக்கியத்துவம் வாய்ந்த அமைப்புகள் ஆகியவை அடங்கும்.
முக்கிய காலப்போக்கில் நிலைத்தன்மை வடிவங்கள்
காலப்போக்கில் நிலைத்தன்மையை திறம்பட செயல்படுத்துவதற்கும் நிர்வகிப்பதற்கும் குறிப்பிட்ட வடிவங்கள் மற்றும் நுட்பங்களை ஏற்றுக்கொள்வது தேவைப்படுகிறது. வெவ்வேறு முனைகள் வேறுபடும்போது எழும் மோதல்களைக் கையாள்வதிலும் இறுதியில் ஒன்றிணைவதை உறுதி செய்வதிலும் முக்கிய சவால் உள்ளது.
1. நகலெடுத்தல் மற்றும் கிசுகிசு நெறிமுறைகள்
நகலெடுத்தல் பரவலாக்கப்பட்ட அமைப்புகளுக்கு அடிப்படையானது. இறுதியில் நிலைத்தன்மை அமைப்புகளில், தரவு பல முனைகளில் நகலெடுக்கப்படுகிறது. புதுப்பிப்புகள் ஒரு மூல முனைவிலிருந்து பிற நகல்களுக்கு பரப்பப்படுகின்றன. கிசுகிசு நெறிமுறைகள் (தொற்று நெறிமுறைகள் என்றும் அழைக்கப்படுகின்றன) இதை அடைய ஒரு பொதுவான மற்றும் வலுவான வழி. ஒரு கிசுகிசு நெறிமுறையில்:
- ஒவ்வொரு முனையும் அவ்வப்போது மற்றும் தோராயமாக மற்ற முனைகளின் துணைக்குழுவுடன் தொடர்பு கொள்கிறது.
- தகவல்தொடர்பு காலத்தில், முனைகள் அவற்றின் தற்போதைய நிலை மற்றும் அவர்களிடம் இருக்கும் எந்தவொரு புதுப்பிப்புகள் பற்றிய தகவல்களைப் பரிமாறிக்கொள்கின்றன.
- அனைத்து முனைகளுக்கும் சமீபத்திய தகவல் கிடைக்கும் வரை இந்த செயல்முறை தொடர்கிறது.
உதாரணம்: Apache Cassandra முனை கண்டுபிடிப்பு மற்றும் தரவு பரவலுக்கு ஒரு பியர்-டு-பியர் கிசுகிசு பொறிமுறையைப் பயன்படுத்துகிறது. ஒரு கிளஸ்டரில் உள்ள முனைகள் அவற்றின் ஆரோக்கியம் மற்றும் தரவு பற்றிய தகவல்களைத் தொடர்ந்து பரிமாறிக்கொள்கின்றன, புதுப்பிப்புகள் இறுதியில் அமைப்பு முழுவதும் பரவுவதை உறுதி செய்கின்றன.
2. வெக்டர் கடிகாரங்கள்
வெக்டர் கடிகாரங்கள் என்பது ஒரு விநியோகிக்கப்பட்ட அமைப்பில் காரணத்தை மற்றும் ஒரே நேரத்தில் புதுப்பிப்புகளைக் கண்டறிவதற்கான ஒரு பொறிமுறையாகும். ஒவ்வொரு செயல்முறையும் வெக்டர் கவுண்டர்களின் வெக்டரை பராமரிக்கிறது, ஒன்று அமைப்பில் உள்ள ஒவ்வொரு செயல்முறைக்கும். ஒரு நிகழ்வு நடந்தால் அல்லது ஒரு செயல்முறை அதன் உள்ளூர் நிலையை புதுப்பித்தால், அது திசையனில் அதன் சொந்த கவுண்டரை அதிகரிக்கும். ஒரு செய்தியை அனுப்பும்போது, அது அதன் தற்போதைய வெக்டர் கடிகாரத்தை உள்ளடக்கியது. ஒரு செய்தியைப் பெறும்போது, ஒரு செயல்முறை ஒவ்வொரு செயல்முறைக்கும் அதன் சொந்த கவுண்டர்கள் மற்றும் பெறப்பட்ட கவுண்டர்களின் அதிகபட்சத்தை எடுத்து அதன் வெக்டர் கடிகாரத்தைப் புதுப்பிக்கிறது.
வெக்டர் கடிகாரங்கள் அடையாளம் காண உதவுகின்றன:
- காரணமாக தொடர்புடைய நிகழ்வுகள்: வெக்டர் கடிகாரம் A வெக்டர் கடிகாரம் B ஐ விட குறைவாகவோ அல்லது சமமாகவோ இருந்தால் (கூறு-வாரியாக), நிகழ்வு A நிகழ்வு B க்கு முன்பு நடந்தது.
- ஒரே நேரத்தில் நிகழ்வுகள்: வெக்டர் கடிகாரம் A B ஐ விட குறைவாகவோ அல்லது சமமாகவோ இல்லை என்றால், B A ஐ விட குறைவாகவோ அல்லது சமமாகவோ இல்லை என்றால், நிகழ்வுகள் ஒரே நேரத்தில் இருக்கும்.
இந்த தகவல் மோதல் தீர்வுக்கானது.
உதாரணம்: Amazon DynamoDB (உள்ளே) போன்ற பல NoSQL தரவுத்தளங்கள், தரவு உருப்படிகளின் பதிப்பைக் கண்காணிக்கவும், ஒன்றிணைக்க வேண்டியிருக்கும் ஒரே நேரத்தில் எழுத்துக்களைக் கண்டறியவும் ஒரு வகை வெக்டர் கடிகாரங்களைப் பயன்படுத்துகின்றன.
3. கடைசியாக எழுதியவர் வெற்றி பெறுகிறார் (LWW)
கடைசியாக எழுதியவர் வெற்றி பெறுகிறார் (LWW) என்பது ஒரு எளிய மோதல் தீர்வு உத்தி. ஒரே தரவு உருப்படிக்கு பல முரண்பாடான எழுத்துக்கள் ஏற்படும்போது, சமீபத்திய நேர முத்திரையுடன் கூடிய எழுத்து உறுதியான பதிப்பாகத் தேர்ந்தெடுக்கப்படுகிறது. இதற்கு 'சமீபத்திய' நேர முத்திரையை தீர்மானிக்க நம்பகமான வழி தேவைப்படுகிறது.
- நேர முத்திரை உருவாக்கம்: நேர முத்திரைகள் கிளையன்ட், எழுத்தைப் பெறும் சேவையகம் அல்லது மையப்படுத்தப்பட்ட நேர சேவையால் உருவாக்கப்படலாம்.
- சவால்கள்: முனைகளுக்கு இடையிலான கடிகார விலகல் ஒரு குறிப்பிடத்தக்க பிரச்சினையாக இருக்கலாம். கடிகாரங்கள் ஒத்திசைக்கப்படாவிட்டால், ஒரு 'பிந்தைய' எழுத்து 'முந்தையதாக' தோன்றலாம். ஒத்திசைக்கப்பட்ட கடிகாரங்களைப் பயன்படுத்துதல் (எ.கா., NTP) அல்லது உடல் நேரத்தை தர்க்கரீதியான அதிகரிப்புகளுடன் இணைக்கும் கலப்பின தர்க்கரீதியான கடிகாரங்கள் ஆகியவை தீர்வுகளில் அடங்கும்.
உதாரணம்: நகலெடுப்பிற்காக கட்டமைக்கப்படும்போது, தோல்வியுற்ற சூழ்நிலைகளில் மோதல்களைத் தீர்ப்பதற்கு Redis பெரும்பாலும் LWW ஐப் பயன்படுத்துகிறது. ஒரு மாஸ்டர் தோல்வியுற்றால், ஒரு நகல் புதிய மாஸ்டராக மாறலாம், இரண்டிலும் ஒரே நேரத்தில் எழுத்துக்கள் ஏற்பட்டால், சமீபத்திய நேர முத்திரை வெற்றியடையும்.
4. காரண நிலைத்தன்மை
சரியாக 'காலப்போக்கில்' இல்லாவிட்டாலும், காரண நிலைத்தன்மை அடிப்படை காலப்போக்கில் நிலைத்தன்மையை விட வலுவான உத்தரவாதமாகும், மேலும் இது காலப்போக்கில் நிலைத்தன்மை அமைப்புகளில் பெரும்பாலும் பயன்படுத்தப்படுகிறது. ஒரு நிகழ்வு மற்றொரு நிகழ்வுக்கு காரணமாக இருந்தால், இரண்டாவது நிகழ்வைப் பார்க்கும் அனைத்து முனைகளும் முதல் நிகழ்வையும் பார்க்க வேண்டும் என்பதை இது உறுதி செய்கிறது. காரணத்துடன் தொடர்பில்லாத செயல்பாடுகள் வெவ்வேறு முனைகளால் வெவ்வேறு வரிசையில் காணப்படலாம்.
இது பெரும்பாலும் செயல்பாடுகளின் காரண வரலாற்றைக் கண்காணிக்க வெக்டர் கடிகாரங்கள் அல்லது ஒத்த வழிமுறைகளைப் பயன்படுத்தி செயல்படுத்தப்படுகிறது.
உதாரணம்: புதிய பொருட்களுக்கான Amazon S3 இன் ரீட்-ஆஃப்டர்-ரைட் நிலைத்தன்மை மற்றும் மேலெழுதும் PUTS மற்றும் DELETES க்கான காலப்போக்கில் நிலைத்தன்மை சில செயல்பாடுகளுக்கு வலுவான நிலைத்தன்மையையும் மற்றவற்றுக்கு பலவீனமான நிலைத்தன்மையையும் வழங்கும் ஒரு அமைப்பைக் காட்டுகிறது, பெரும்பாலும் காரண உறவுகளை நம்பியுள்ளது.
5. தொகுப்பு சமரசம் (CRDTகள்)
மோதல் இல்லாத நகலெடுக்கப்பட்ட தரவு வகைகள் (CRDTகள்) என்பது தரவு கட்டமைப்புகள் ஆகும், அவை சிக்கலான மோதல் தீர்வு தர்க்கம் அல்லது ஒரு மத்திய அதிகாரம் தேவையில்லாமல் நகல்களுக்கான ஒரே நேரத்தில் புதுப்பிப்புகளை தானாகவே ஒன்றிணைக்க முடியும். அவை உள்ளார்ந்த முறையில் காலப்போக்கில் நிலைத்தன்மை மற்றும் அதிக கிடைக்கும் தன்மைக்காக வடிவமைக்கப்பட்டுள்ளன.
CRDTகள் இரண்டு முக்கிய வடிவங்களில் வருகின்றன:
- நிலை அடிப்படையிலான CRDTகள் (CvRDTகள்): நகல்கள் அவற்றின் முழு நிலையையும் பரிமாறிக்கொள்கின்றன. ஒன்றிணைக்கும் செயல்பாடு கூட்டு, பரிமாற்ற மற்றும் முரணற்றது.
- செயல்பாடு அடிப்படையிலான CRDTகள் (OpRDTகள்): நகல்கள் செயல்பாடுகளை பரிமாறிக்கொள்கின்றன. ஒரு பொறிமுறை (காரண ஒலிபரப்பு போன்றவை) அனைத்து நகல்களுக்கும் காரண வரிசையில் செயல்பாடுகள் வழங்கப்படுவதை உறுதி செய்கிறது.
உதாரணம்: Riak KV, ஒரு விநியோகிக்கப்பட்ட NoSQL தரவுத்தளம், கவுண்டர்கள், தொகுப்புகள், வரைபடங்கள் மற்றும் பட்டியல்களுக்கான CRDTகளை ஆதரிக்கிறது, இது டெவலப்பர்கள் வெவ்வேறு முனைகளில் ஒரே நேரத்தில் தரவைப் புதுப்பிக்க முடியும் மற்றும் தானாகவே ஒன்றிணைக்க முடியும் பயன்பாடுகளை உருவாக்க அனுமதிக்கிறது.
6. ஒன்றிணைக்கக்கூடிய தரவு கட்டமைப்புகள்
CRDTகளைப் போலவே, சில அமைப்புகள் சிறப்பு தரவு கட்டமைப்புகளைப் பயன்படுத்துகின்றன, அவை ஒரே நேரத்தில் மாற்றங்களுக்குப் பிறகும் ஒன்றிணைக்க வடிவமைக்கப்பட்டுள்ளன. இதில் தரவின் பதிப்புகள் அல்லது டெல்டாக்களை சேமிப்பது புத்திசாலித்தனமாக இணைக்கப்படலாம்.
- செயல்பாட்டு மாற்றம் (OT): கூகிள் டாக்ஸ் போன்ற கூட்டு எடிட்டிங் அமைப்புகளில் பொதுவாகப் பயன்படுத்தப்படும் OT, பல பயனர்களிடமிருந்து ஒரே நேரத்தில் திருத்தங்கள் ஒரு நிலையான வரிசையில் பயன்படுத்தப்படுவதை உறுதி செய்கிறது, அவை வரிசைக்கு வெளியே வந்தாலும் கூட.
- பதிப்பு வெக்டர்கள்: வெக்டர் கடிகாரத்தின் ஒரு எளிய வடிவம், பதிப்பு வெக்டர்கள் ஒரு நகலுக்குத் தெரிந்த தரவின் பதிப்புகளைக் கண்காணித்து, மோதல்களைக் கண்டறிந்து தீர்க்கப் பயன்படுத்தப்படுகின்றன.
உதாரணம்: ஒரு CRDT ஆக இல்லாவிட்டாலும், கூகிள் டாக்ஸ் ஒரே நேரத்தில் திருத்தங்களைக் கையாண்டு அவற்றை பயனர்கள் முழுவதும் ஒத்திசைக்கும் விதம், செயலில் உள்ள ஒன்றிணைக்கக்கூடிய தரவு கட்டமைப்புகளுக்கு ஒரு சிறந்த எடுத்துக்காட்டு, அனைவரும் ஒரு நிலையான, ஆனால் இறுதியில் புதுப்பிக்கப்பட்ட ஆவணத்தைப் பார்ப்பதை உறுதி செய்கிறது.
7. கோரம் படித்தல் மற்றும் எழுதுதல்
வலுவான நிலைத்தன்மையுடன் அடிக்கடி தொடர்புடையதாக இருந்தாலும், படிப்பது மற்றும் எழுதுவதற்கான கோரம் அளவுகளை சரிசெய்வதன் மூலம் கோரம் வழிமுறைகளை காலப்போக்கில் நிலைத்தன்மைக்கு மாற்றியமைக்க முடியும். Cassandra போன்ற அமைப்புகளில், பல முனைகளால் (W) ஒப்புக்கொள்ளப்பட்டால் ஒரு எழுதுதல் செயல்பாடு வெற்றிகரமாகக் கருதப்படலாம், மேலும் பெரும்பான்மை (R) முனைகளிலிருந்து பதில்களைப் பெற முடிந்தால், ஒரு வாசிப்பு செயல்பாடு தரவைத் தரும். W + R > N (N என்பது மொத்த நகல்களின் எண்ணிக்கை) என்றால், உங்களுக்கு வலுவான நிலைத்தன்மை கிடைக்கும். இருப்பினும், நீங்கள் W + R <= N மதிப்புள்ள மதிப்புகளைத் தேர்வுசெய்தால், அதிக கிடைக்கும் தன்மையை அடையலாம் மற்றும் காலப்போக்கில் நிலைத்தன்மைக்கு சரிசெய்யலாம்.
காலப்போக்கில் நிலைத்தன்மைக்கு, பொதுவாக:
- எழுதுதல்: ஒற்றை முனை (W=1) அல்லது ஒரு சிறிய எண்ணிக்கையிலான முனைகளால் ஒப்புக்கொள்ளப்படலாம்.
- படித்தல்: கிடைக்கும் எந்த முனையாலும் வழங்கப்படலாம், மேலும் ஒரு முரண்பாடு இருந்தால், வாசிப்பு செயல்பாடு பின்னணி சமரசத்தைத் தூண்டலாம்.
உதாரணம்: Apache Cassandra படிக்க மற்றும் எழுதுவதற்கான நிலைத்தன்மை அளவுகளை சரிசெய்ய அனுமதிக்கிறது. அதிக கிடைக்கும் தன்மைக்கும் காலப்போக்கில் நிலைத்தன்மைக்கும், ஒருவர் W=1 (ஒரே முனை மூலம் ஒப்புக்கொள்ளப்பட்ட எழுதுதல்) மற்றும் R=1 (ஒரு முனையிலிருந்து படிக்கவும்) கட்டமைக்கலாம். தரவுத்தளம் பின்னர் முரண்பாடுகளைத் தீர்க்க பின்னணியில் வாசிப்பு பழுதுபார்க்கும்.
8. பின்னணி சமரசம்/வாசிப்பு பழுதுபார்த்தல்
காலப்போக்கில் நிலைத்தன்மை அமைப்புகளில், முரண்பாடுகள் தவிர்க்க முடியாதவை. பின்னணி சமரசம் அல்லது வாசிப்பு பழுதுபார்த்தல் என்பது இந்த முரண்பாடுகளைக் கண்டறிந்து சரிசெய்யும் செயல்முறையாகும்.
- வாசிப்பு பழுதுபார்த்தல்: ஒரு வாசிப்பு கோரிக்கை செய்யப்படும்போது, பல நகல்கள் தரவின் வெவ்வேறு பதிப்புகளைத் திரும்பப் பெற்றால், அமைப்பு வாடிக்கையாளருக்கு மிகச் சமீபத்திய பதிப்பைத் திரும்பப் பெறலாம் மற்றும் காலாவதியான நகல்களை சரியான தரவுடன் ஒத்திசைவற்ற முறையில் புதுப்பிக்கலாம்.
- பின்னணி துப்புரவு: அவ்வப்போது பின்னணி செயல்முறைகள் முரண்பாடுகளுக்காக நகல்களை ஸ்கேன் செய்து பழுதுபார்க்கும் வழிமுறைகளைத் தொடங்கலாம்.
உதாரணம்: Amazon DynamoDB காட்சிகளுக்குப் பின்னால் முரண்பாடுகளைக் கண்டறிந்து சரிசெய்வதற்கான அதிநவீன உள் பொறிமுறைகளைப் பயன்படுத்துகிறது, தரவு வெளிப்படையான கிளையன்ட் தலையீடு இல்லாமல் இறுதியில் ஒன்றிணைவதை உறுதி செய்கிறது.
காலப்போக்கில் நிலைத்தன்மைக்கான சவால்கள் மற்றும் பரிசீலனைகள்
சக்திவாய்ந்ததாக இருந்தாலும், காலப்போக்கில் நிலைத்தன்மை அதன் சொந்த சவால்களை அறிமுகப்படுத்துகிறது, அதை கட்டிடக் கலைஞர்கள் மற்றும் டெவலப்பர்கள் கவனமாக கருத்தில் கொள்ள வேண்டும்:
1. தேங்கிப்போன படிப்புகள்
காலப்போக்கில் நிலைத்தன்மையின் மிகவும் நேரடி விளைவு தேங்கிப்போன தரவைப் படிப்பதற்கான சாத்தியம். இது பின்வருவனவற்றிற்கு வழிவகுக்கும்:
- நிலையான பயனர் அனுபவம்: பயனர்கள் சற்று காலாவதியான தகவல்களைக் காணலாம், இது குழப்பமானதாகவோ அல்லது விரக்தியடையவோ கூடும்.
- தவறான முடிவுகள்: முக்கியமான முடிவுகளுக்கு இந்த தரவை நம்பியிருக்கும் பயன்பாடுகள் உகந்ததல்லாத தேர்வுகளைச் செய்யலாம்.
தணித்தல்: வாசிப்பு பழுதுபார்த்தல், சரிபார்ப்பு மூலம் கிளையன்ட் பக்க தற்காலிக சேமிப்பு அல்லது முக்கியமான பாதைகளுக்கு மிகவும் வலுவான நிலைத்தன்மை மாதிரிகள் (காரண நிலைத்தன்மை போன்றவை) போன்ற உத்திகளைப் பயன்படுத்தவும். தரவு சற்று தாமதமாகலாம் என்று பயனர்களுக்குத் தெளிவாகத் தெரிவிக்கவும்.
2. முரண்பாடான எழுத்துக்கள்
பல பயனர்கள் அல்லது சேவைகள் ஒரே தரவு உருப்படியை ஒரே நேரத்தில் வெவ்வேறு முனைகளில் அந்த புதுப்பிப்புகள் ஒத்திசைக்கப்படுவதற்கு முன்பு புதுப்பிக்கும்போது, மோதல்கள் எழுகின்றன. இந்த மோதல்களைத் தீர்ப்பதற்கு LWW, CRDTகள் அல்லது பயன்பாட்டு குறிப்பிட்ட ஒன்றிணைப்பு தர்க்கம் போன்ற வலுவான உத்திகள் தேவைப்படுகின்றன.
உதாரணம்: ஆஃப்லைன் முதல் பயன்பாட்டில் இரண்டு பயனர்கள் ஒரே ஆவணத்தைத் திருத்துவதாக கற்பனை செய்து பாருங்கள். அவர்கள் இருவரும் வெவ்வேறு பிரிவுகளில் ஒரு பத்தியை சேர்த்து பின்னர் ஒரே நேரத்தில் ஆன்லைனில் சென்றால், இரண்டையும் இழக்காமல் இந்த சேர்த்தல்களை ஒன்றிணைக்க அமைப்புக்கு ஒரு வழி தேவை.
3. பிழைத்திருத்தம் மற்றும் கண்காணிக்கக்கூடிய தன்மை
காலப்போக்கில் நிலைத்தன்மை அமைப்புகளில் சிக்கல்களை பிழைத்திருத்துவது மிகவும் சிக்கலானதாக இருக்கும். ஒரு புதுப்பிப்பின் பாதையைத் தேடுவது, ஒரு குறிப்பிட்ட முனை ஏன் தேங்கிப்போன தரவைக் கொண்டுள்ளது என்பதைப் புரிந்துகொள்வது அல்லது மோதல் தீர்வு தோல்விகளைக் கண்டறிவது அதிநவீன கருவி மற்றும் ஆழமான புரிதல் தேவைப்படுகிறது.
செயல்படக்கூடிய நுண்ணறிவு: தரவு நகலெடுப்பு பின்தங்கல், மோதல் விகிதங்கள் மற்றும் உங்கள் நகலெடுப்பு வழிமுறைகளின் ஆரோக்கியம் ஆகியவற்றில் தெரிவுநிலையை வழங்கும் விரிவான பதிவு, விநியோகிக்கப்பட்ட தடமறிதல் மற்றும் கண்காணிப்பு கருவிகளில் முதலீடு செய்யுங்கள்.
4. செயலாக்கத்தின் சிக்கலானது
காலப்போக்கில் நிலைத்தன்மை என்ற கருத்து கவர்ச்சிகரமானதாக இருந்தாலும், அதைச் சரியாகச் செயல்படுத்துவது மற்றும் வலுவாகச் செயல்படுத்துவது சிக்கலானதாக இருக்கும். சரியான வடிவங்களைத் தேர்ந்தெடுப்பது, விளிம்பு நிகழ்வுகளைக் கையாள்வது மற்றும் அமைப்பு இறுதியில் ஒன்றிணைவதை உறுதி செய்வது கவனமாக வடிவமைப்பு மற்றும் சோதனை தேவைப்படுகிறது.
செயல்படக்கூடிய நுண்ணறிவு: LWW போன்ற எளிய காலப்போக்கில் நிலைத்தன்மை வடிவங்களுடன் தொடங்கவும், உங்கள் தேவைகள் உருவாகும்போது மற்றும் நீங்கள் அதிக அனுபவம் பெறும்போது CRDTகள் போன்ற அதிக அதிநவீனமானவற்றை படிப்படியாக அறிமுகப்படுத்தவும். இந்த சிக்கலான சிலவற்றை விலக்கும் நிர்வகிக்கப்பட்ட சேவைகளைப் பயன்படுத்தவும்.
5. வணிக தர்க்கத்தின் மீதான தாக்கம்
வணிக தர்க்கம் காலப்போக்கில் நிலைத்தன்மையை மனதில் கொண்டு வடிவமைக்கப்பட வேண்டும். துல்லியமான, சமீபத்திய நிலையில் இருக்கும் செயல்பாடுகள் தோல்வியடையக்கூடும் அல்லது எதிர்பாராதவிதமாக நடந்து கொள்ளலாம். எடுத்துக்காட்டாக, வாடிக்கையாளர் தங்கள் வண்டியில் ஒரு பொருளைச் சேர்த்தவுடன் சரக்குகளை உடனடியாகக் குறைக்கும் ஒரு இ-காமர்ஸ் அமைப்பு, சரக்கு புதுப்பிப்பு அனைத்து சேவைகள் மற்றும் நகல்கள் முழுவதும் உறுதியாக இல்லாவிட்டால் அதிக விற்பனை செய்யலாம்.
தணித்தல்: தற்காலிக நிலைத்தன்மையின்மைகளுக்கு வணிக தர்க்கத்தை பொறுத்துக்கொள்ளும் வகையில் வடிவமைக்கவும். முக்கியமான செயல்பாடுகளுக்கு, Saga முறை போன்ற முறைகளைப் பயன்படுத்தி மைக்ரோ சேவைகளில் விநியோகிக்கப்பட்ட பரிவர்த்தனைகளை நிர்வகிக்கவும், அடிப்படைக் கடைகள் இறுதியில் நிலையானதாக இருந்தாலும் கூட.
உலகளவில் காலப்போக்கில் நிலைத்தன்மையை நிர்வகிப்பதற்கான சிறந்த நடைமுறைகள்
உலகளாவிய பயன்பாடுகளுக்கு, காலப்போக்கில் நிலைத்தன்மையை ஏற்றுக்கொள்வது பெரும்பாலும் ஒரு தேவை. இங்கே சில சிறந்த நடைமுறைகள் உள்ளன:
1. உங்கள் தரவு மற்றும் பணிச்சுமைகளைப் புரிந்து கொள்ளுங்கள்
உங்கள் பயன்பாட்டின் தரவு அணுகல் வடிவங்களை முழுமையாக பகுப்பாய்வு செய்யுங்கள். எந்த தரவு காலப்போக்கில் நிலைத்தன்மையை பொறுத்துக்கொள்ள முடியும் என்பதையும், எது வலுவான உத்தரவாதங்கள் தேவை என்பதையும் அடையாளம் காணவும். எல்லா தரவும் உலகளவில் வலுவாக நிலைத்திருக்க வேண்டியதில்லை.
2. சரியான கருவிகள் மற்றும் தொழில்நுட்பங்களைத் தேர்வு செய்யுங்கள்
காலப்போக்கில் நிலைத்தன்மைக்காக வடிவமைக்கப்பட்டுள்ள தரவுத்தளங்கள் மற்றும் விநியோகிக்கப்பட்ட அமைப்புகளைத் தேர்ந்தெடுத்து, நகலெடுத்தல், மோதல் கண்டறிதல் மற்றும் தீர்வுக்கு வலுவான வழிமுறைகளை வழங்கவும். எடுத்துக்காட்டுகளில் அடங்கும்:
- NoSQL தரவுத்தளங்கள்: Cassandra, Riak, Couchbase, DynamoDB, MongoDB (சரியான உள்ளமைவுகளுடன்).
- விநியோகிக்கப்பட்ட தற்காலிக சேமிப்புகள்: Redis Cluster, Memcached.
- செய்தி வரிசைகள்: Kafka, RabbitMQ (ஒத்திசைவற்ற புதுப்பிப்புகளுக்கு).
3. வலுவான மோதல் தீர்வை செயல்படுத்தவும்
மோதல்கள் நடக்காது என்று நினைக்க வேண்டாம். உங்கள் பயன்பாட்டின் தேவைகளுக்கு மிகவும் பொருத்தமான ஒரு மோதல் தீர்வு மூலோபாயத்தைத் (LWW, CRDTகள், தனிப்பயன் தர்க்கம்) தேர்வு செய்து அதை கவனமாக செயல்படுத்தவும். உயர் ஒருங்கிணைப்பின் கீழ் அதை முழுமையாக சோதிக்கவும்.
4. நகலெடுப்பு பின்தங்கல் மற்றும் நிலைத்தன்மையைக் கண்காணிக்கவும்
முனைகளுக்கு இடையிலான நகலெடுப்பு பின்தங்கலைக் கண்காணிக்க விரிவான கண்காணிப்பை செயல்படுத்தவும். புதுப்பிப்புகள் பரவுவதற்கு எவ்வளவு நேரம் ஆகும் என்பதைப் புரிந்து கொண்டு, அதிகப்படியான பின்தங்கலுக்கான விழிப்பூட்டல்களை அமைக்கவும்.
உதாரணம்: உங்கள் விநியோகிக்கப்பட்ட தரவு கடைகளில் 'ரீட் ரிப்பேர் லேட்டன்சி', 'ரெப்ளிகேஷன் லேட்டன்சி' மற்றும் 'வெர்ஷன் டைவர்ஜென்ஸ்' போன்ற அளவீடுகளைக் கண்காணிக்கவும்.
5. நேர்த்தியான தரமிறக்கத்திற்காக வடிவமைக்கவும்
சில தரவு தற்காலிகமாக நிலையற்றதாக இருக்கும்போது, உங்கள் பயன்பாடு குறைக்கப்பட்ட திறன்களுடன் கூட செயல்பட முடியும். தேங்கிப்போன படிப்புகள் காரணமாக முக்கியமான தோல்விகளைத் தவிர்க்கவும்.
6. நெட்வொர்க் தாமதத்திற்கு மேம்படுத்தவும்
உலகளாவிய அமைப்புகளில், நெட்வொர்க் தாமதம் ஒரு முக்கிய காரணியாகும். தாமதத்தின் தாக்கத்தை குறைக்க உங்கள் நகலெடுப்பு மற்றும் தரவு அணுகல் உத்திகளை வடிவமைக்கவும். போன்ற நுட்பங்களைக் கவனியுங்கள்:
- பிராந்திய வரிசைப்படுத்தல்கள்: உங்கள் பயனர்களுக்கு நெருக்கமாக தரவு நகல்களை வரிசைப்படுத்தவும்.
- ஒத்திசைவற்ற செயல்பாடுகள்: ஒத்திசைவற்ற தகவல் தொடர்பு மற்றும் பின்னணி செயலாக்கத்திற்கு ஆதரவளிக்கவும்.
7. உங்கள் குழுவுக்குக் கற்பிக்கவும்
உங்கள் மேம்பாடு மற்றும் செயல்பாட்டுக் குழுக்கள் காலப்போக்கில் நிலைத்தன்மை, அதன் தாக்கங்கள் மற்றும் அதை நிர்வகிக்கப் பயன்படுத்தப்படும் வடிவங்கள் பற்றிய வலுவான புரிதலைக் கொண்டுள்ளன என்பதை உறுதிப்படுத்தவும். நம்பகமான அமைப்புகளை உருவாக்குவதற்கும் பராமரிப்பதற்கும் இது மிகவும் முக்கியமானது.
முடிவுரை
காலப்போக்கில் நிலைத்தன்மை ஒரு சமரசம் அல்ல; இது ஒரு அடிப்படை வடிவமைப்புத் தேர்வு ஆகும், இது அதிக கிடைக்கும், அளவிடக்கூடிய மற்றும் சிறந்த செயல்திறன் மிக்க விநியோகிக்கப்பட்ட அமைப்புகளை உருவாக்க உதவுகிறது, குறிப்பாக உலகளாவிய சூழலில். வர்த்தகங்களை புரிந்துகொள்வதன் மூலமும், கிசுகிசு நெறிமுறைகள், வெக்டர் கடிகாரங்கள், LWW மற்றும் CRDTகள் போன்ற பொருத்தமான வடிவங்களை ஏற்றுக்கொள்வதன் மூலமும், முரண்பாடுகளை விடாமுயற்சியுடன் கண்காணிப்பதன் மூலமும், டெவலப்பர்கள் காலப்போக்கில் நிலைத்தன்மையின் சக்தியைப் பயன்படுத்தி உலகளவில் பயனர்களுக்கு திறம்பட சேவை செய்யும் மீள்தன்மையுடைய பயன்பாடுகளை உருவாக்க முடியும்.
காலப்போக்கில் நிலைத்தன்மையைக் கையாள்வதற்கான பயணம் ஒரு தொடர்ச்சியான ஒன்றாகும், இது தொடர்ச்சியான கற்றல் மற்றும் தழுவல் தேவைப்படுகிறது. அமைப்புகள் உருவாகும்போது மற்றும் பயனர் எதிர்பார்ப்புகள் மாறும்போது, நமது பெருகிய முறையில் ஒன்றோடொன்று இணைக்கப்பட்ட டிஜிட்டல் உலகில் தரவு ஒருமைப்பாடு மற்றும் கிடைக்கும் தன்மையை உறுதி செய்வதற்காக பயன்படுத்தப்படும் உத்திகள் மற்றும் வடிவங்களும் மாறும்.